using System;

namespace NFreeMarker.Template
{
    /**
     * Date values in a template data model must implement this interface.
     * Contrary to Java, FreeMarker actually distinguishes values that represent
     * only a time, only a date, or a combined date and time. All three are
     * represented using this single interface, however there's a method that
     *
     * @author Attila Szegedi
     *
     * @version $Id: TemplateDateModel.java,v 1.10 2004/03/13 13:05:09 ddekany Exp $
     */

    public interface ITemplateDateModel : ITemplateModel
    {
        /**
         * Returns the date value. The return value must not be null.
         * @return the {@link Date} instance associated with this date model.
         */
        DateTimeOffset GetAsDate();

        /**
         * Returns the type of the date. It can be any of <tt>TIME</tt>, 
         * <tt>DATE</tt>, or <tt>DATETIME</tt>.
         */
        int GetDateType();
    }
}